#ifndef XGP_STUDY_DEMO37_MYLIST_H
#define XGP_STUDY_DEMO37_MYLIST_H

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

//动态数组的结构体
typedef struct MyList {
    int* pAddr;     //存放数据的地址
    int size;       //当前又多少元素
    int maxSize;   //容量，容器当前的最大能容纳的元素
} myList;

//1. initList(&L)：初始化表。构造一个空的线性表。放回值应该是一个线性表
myList* initList();

//2. destroyList(&L)：销毁操作。销毁线性表，并释放线性表L所占的内存空间。放回值为void
int destroyList(myList* list);

//3. locateElem(L,e)：按值查找操作。在表中L查找具有给定关键值的元素。放回一个int类型
int locateElem(myList* list,int value);

//4. getElem(L,i)：按位查找。获取表中第i个位置的元素的值。
int getElem(myList* list, int pos);

//5. listInsert(&L,i,e)：插入操作。在表L中的第i个位置上插入指定的元素e。
int listInsert(myList* list, int pos,int value);

//6. listDelete(&L,i,e)：删除操作。删除表L中第i个位置的元素，并用e放回删除元素的值。
int listDelete(myList* list,int pos);

//7. PrintList(L)：输出操作。按前后顺序输出线性表L的所有元素值。
void PrintList(myList* list);

//8. empty(L)：判空操作。若L为空表，则放回true，否则放回false。
int isEmpty(myList* list);

//9. length(L)：求表长。放回线性表L的长度，即L中数据元素的个数。
int getLength(myList* list);

#endif //XGP_STUDY_DEMO37_MYLIST_H
